// function fib(n) {
//     if(n<=1) return n;
//     return fib(n-1) + fib(n-2);
// }
// console.log(fib(10));

// 如何用闭包优化fib
function memoizedFib() {
    // 闭包 1.函数嵌套函数
    // 自由变量
    const cache = {}; // 存储
    return function fib(n) {
        if(n<=1) return n; // 退出条件
        if(cache[n]) return cache[n];
        cache[n] = fib(n-1) + fib(n-2);
        return cache[n];
    }
}
// 2.可以在外部访问
const fib = memoizedFib();
console.log(fib(100));